package com.udp;

import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;

/**传递基本数据类型
 * 客户端
 */
public class BasicTypeClient02 {
    public static void main(String[] args) {
        //先定义要发送的基本数据类型
        long  l = 2000L;

        //需要字节数组输出流  发送消息的DatagramSocket
        //基本数据输出流
        ByteArrayOutputStream bos = null;
        DataOutputStream dos = null;
        DatagramSocket ds = null;
        try{
            //将基本数据类型转换为字节数组，写入要发送的数据，
            // 通过toByteArray()，将基本数据类型数据转换成字节数组类型
            // 再封装，然后发送
            /*数据传入基本数据流DataOutputStream，再通过ByteArrayOutputStream
             * 转为字节数组流，最后通过toByteArray() 方法 返回byte字节数组*/
            bos = new ByteArrayOutputStream();
            dos = new DataOutputStream(bos);
            dos.writeLong(l);
            //通过toByteArray()，将基本数据类型数据转换成字节数组类型
            byte[] arr = bos.toByteArray();
            DatagramPacket dp = new DatagramPacket(arr,arr.length,new InetSocketAddress("127.0.0.1",6666));
            ds = new DatagramSocket(6000);
            ds.send(dp);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(bos != null){
                try {
                    bos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(dos != null){
                try {
                    dos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(ds != null){
                ds.close();
            }
        }
    }
}
